using System;
using System.Collections.Generic;
using System.ServiceModel;

using SIMA.Entities;
using SIMA.Core.Enums;
using SIMA.Core.Security;

namespace SIMA.Services
{

	[ServiceContract]
	public interface IT_C_TurnoMantenimientoService
	{
		#region Get all T_C_TurnoMantenimiento
		[OperationContract]
		List<T_C_TurnoMantenimiento> GetAllT_C_TurnoMantenimiento(Profile securityProfile);

		[OperationContract(AsyncPattern = true)]
		IAsyncResult BeginGetAllT_C_TurnoMantenimiento(Profile securityProfile, AsyncCallback callback, object state);

		List<T_C_TurnoMantenimiento> EndGetAllT_C_TurnoMantenimiento(IAsyncResult asyncResult);

		#endregion

		#region Get filtered T_C_TurnoMantenimiento
		[OperationContract]
		List<T_C_TurnoMantenimiento> GetFilteredT_C_TurnoMantenimiento(Profile securityProfile, FilterType filter);

		[OperationContract(AsyncPattern = true)]
		IAsyncResult BeginGetFilteredT_C_TurnoMantenimiento(Profile securityProfile, FilterType filter, AsyncCallback callback, object state);

		List<T_C_TurnoMantenimiento> EndGetFilteredT_C_TurnoMantenimiento(IAsyncResult asyncResult);

		#endregion

		#region New T_C_TurnoMantenimiento
		[OperationContract]
		string RegisterT_C_TurnoMantenimiento(Profile securityProfile, T_C_TurnoMantenimiento newItem);

		[OperationContract(AsyncPattern = true)]
		IAsyncResult BeginRegisterT_C_TurnoMantenimiento(Profile securityProfile, T_C_TurnoMantenimiento newItem, AsyncCallback callback, object state);

		string EndRegisterT_C_TurnoMantenimiento(IAsyncResult asyncResult);

		#endregion

		#region Update T_C_TurnoMantenimiento
		[OperationContract]
		string UpdateT_C_TurnoMantenimiento(Profile securityProfile, T_C_TurnoMantenimiento itemToUpdate, T_C_TurnoMantenimiento itemUpdated);

		[OperationContract(AsyncPattern = true)]
		IAsyncResult BeginUpdateT_C_TurnoMantenimiento(Profile securityProfile, T_C_TurnoMantenimiento itemToUpdate, T_C_TurnoMantenimiento itemUpdated, AsyncCallback callback, object state);

		string EndUpdateT_C_TurnoMantenimiento(IAsyncResult asyncResult);

		#endregion

		#region Delete T_C_TurnoMantenimiento
		[OperationContract]
		string DeleteT_C_TurnoMantenimiento(Profile securityProfile, T_C_TurnoMantenimiento dropItem);

		[OperationContract(AsyncPattern = true)]
		IAsyncResult BeginDeleteT_C_TurnoMantenimiento(Profile securityProfile, T_C_TurnoMantenimiento dropItem, AsyncCallback callback, object state);

		string EndDeleteT_C_TurnoMantenimiento(IAsyncResult asyncResult);

		#endregion

	}
}

